package demo_02;

import java.io.File;

/**
 * @author shkstart
 * @create 2020-04-27 13:20
 * 搜索`D:\aaa` 目录中的`.java` 文件。
 * 1. 目录搜索，无法判断多少级目录，所以使用递归，遍历所有目录。
 * 2. 遍历目录时，获取的子文件，通过文件名称，判断是否符合条件。
 
```java
    */
      public class Demo05Recursion {
        public static void main(String[] args) {
      File file = new File("D:\\test\\abc");
      getAllFile(file);
  }
        public static void getAllFile(File dir){
      //        System.out.println(dir);//打印被遍历的目录名称
        File[] files = dir.listFiles();
        for (File f : files) {
            //对遍历得到的File对象f进行判断,判断是否是文件夹
            if (f.isDirectory()){
                //f是一个文件夹,则继续遍历这个文件夹
                //我们发现getAllFile方法就是传递文件夹,遍历文件夹的方法
                //所以直接调用getAllFile方法即可:递归(自己调用自己)
                getAllFile(f);
            }else {
                //f是一个文件,直接打印即可
                 /*
                c:\\abc\\abc.java
                只要.java结尾的文件
          1.把File对象f,转为字符串对象
       */
      //                String name = f.getName();//abc.java
//                String path = f.getPath();//c:\\abc\\abc.java
                String s = f.toString();//c:\\abc\\abc.java

      
      
      

            //2.调用String类中的方法endsWith判断字符串是否是以.java结尾
            boolean b = s.endsWith(".txt");
            //3.如果是以.java结尾的文件,则输出
            if (b){
                System.out.println(f);
            }


//                if (f.getName().toLowerCase().endsWith(".txt")){
//                    System.out.println(f);
//                }
            }
        }
    }
}